Modeling languages may be used as meta-languages to describe and execute underlying processes, such as business processes. For example, process modeling languages allow an enterprise to describe tasks of a process, and to automate performance of those tasks in a desired order to achieve a desired result. For instance, the enterprise may implement a number of business software applications, and process modeling may allow coordination of functionalities of these applications, including communications (e.g., messages) between the applications, to achieve a desired result. Further, such process modeling generally relies on language that is common to, and/or interoperable with, many types of software applications and/or development platforms. As a result, for example, process modeling may be used to provide integration of business applications both within and across enterprise organizations.
Thus, such modeling languages allow a flow of activities to be graphically captured and executed, thereby enabling resources responsible for the activities to be coordinated efficiently and effectively. The flow of work in a process is captured through routing (e.g., control flow) constructs, which allow the tasks in the process model to be arranged into the required execution order through sequencing, choices (e.g., decision points allowing alternative branches), parallelism (e.g., tasks running in different branches which execute concurrently), iteration (e.g., looping in branches) and synchronization (e.g., the coming together of different branches).
During execution of process models, it may be necessary or helpful to halt or suspend the execution, and to re-start or resume the execution at a later time. For example, an error or other exception may occur during execution of the process model (e.g., hardware or software malfunctions, or a business-related exception such as a delay in arrival of an expected shipment). If the exception may be temporary, then it may be premature or unnecessary to abort the execution of the entire process model. For example, if the exception is later overcome (such as when the delayed shipment arrives), then it may be possible to proceed with the execution of the process model.
It is possible to perform a system-level suspension of an executing process model, and even to change the process model during the suspension to attempt to overcome the exception. However, such suspension techniques may require extensions to an orchestration (execution) engine of the process model that may be difficult or problematic, and that may have unintended consequences on the process model (upon resumption thereof), and on other (related) process models. Moreover, it may be difficult to re-start a process from the point of suspension, so that a re-set of the process from an earlier point, or from the beginning, may be required.